﻿using System;
using System.Collections.Generic;

namespace Niagara.Core
{
  /// <summary>
  /// Interface that defines the API to support accessing 
  /// Metadata about classes in an arbitrary way.
  /// </summary>
  public interface IAttributeMetadataProvider
  {
    /// <summary>
    /// Gets the attributes for a specific property on a type.
    /// </summary>
    /// <param name="typeName">Name of the type.</param>
    /// <param name="propertyName">Name of the property.</param>
    /// <returns>List of Attributes.</returns>
    IEnumerable<Attribute> GetPropertyAttributes(string typeName, string propertyName);
    
    /// <summary>
    /// Gets the attributes for a particular type.
    /// </summary>
    /// <param name="typeName">Name of the type.</param>
    /// <returns>List of Attributes.</returns>
    IEnumerable<Attribute> GetTypeAttributes(string typeName);
  }
}
